package com.smartstate.admin.biz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.smartstate.admin.biz.entity.bo.LoginLog;
import com.smartstate.admin.biz.entity.bo.Role;
import com.smartstate.admin.biz.entity.bo.User;
import com.smartstate.admin.biz.entity.dto.UserSearchDto;
import com.smartstate.admin.biz.entity.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据用户名(或手机号或邮箱)查询用户
     *
     * @param username 用户名(或手机号或邮箱)
     * @return User
     */
    User findByUserName(@Param(value = "username") String username);

    /**
     * 根据用户名称查询所有相同用户名的用户
     *
     * @param username 用户名
     * @return List<UserVo>
     */
    List<UserVo> findUserVoList(@Param("username") String username);

    /**
     * 条件分页查询
     *
     * @param page  分页
     * @param param 条件参数
     * @return List<UserVo>
     */
    List<UserVo> findUserList(Page page, @Param("param") UserSearchDto param);



    /**
     * 分页查询出企业下的所有用户
     * @param page  分页
     * @param param 条件参数
     * @return List<UserVo>
     */
    List<UserVo> findUserListByCompany(Page page, @Param("param") UserSearchDto param);

    User selectByEnterpriseIdAndUsername(@Param("enterpriseId") String enterpriseId, @Param("username") String username);

    User getById(@Param("id") String id);

    /**
     * 获取企业下的所有用户包括已经逻辑删除的
     */
    List<String> selectIdByEnterpriseId(@Param("enterpriseId") String enterpriseId);

    User selectOne(@Param("username")String username);

    int  addLoginLog(LoginLog loginLog);

    String  getDeptByID(String  deptId);

    String getRoleByName(String useranme);

}
